Recently, portable computing devices that support some form of data entry have become common. Such devices include, for example, cellular telephones, two-way pagers, and personal digital assistants. Often, these devices include a touch-sensitive display screen that serves both to display output from the computing device to its user and to receive input from the user. For some applications, the user “writes” with a stylus on the screen. The user's handwriting is decoded and becomes input to the computing device. In other applications, the user's input options are displayed as control icons on the screen. When the user selects an option by touching the icon associated with the option, the computing device detects the location of the touch and sends a message to the application or utility that presented the icon. To enter text, a “virtual keyboard,” typically a set of icons that look like the keycaps of a traditional keyboard, are painted on the screen. The user “types” by successively touching areas on the screen associated with specific keycap icons.
All of these input modes have at least one thing in common: they assume that the touch-sensitive screen is touched at only one point at a time. Indeed, these screens are designed with this assumption in mind. When a user accidentally touches the screen at more than one point (for example, by hitting two “virtual keys” at the same time), these screens become confused and either capture neither touch or, assuming a single touch, compute a location of the assumed single touch that is some confusing combination of the locations of the multiple touches. Either case confuses the user, and the latter case may result in unwanted input being sent to an application reading the screen.
The problem of accidentally touching more than one location at a time has existed at least since the introduction of the typewriter keyboard in the nineteenth century. Somewhat alleviating the problem, a user of a physical keyboard can usually tell by feel that he has hit more than one key. Unlike these physical keyboards, however, touch-sensitive screens are so rigid and have essentially no “give” that they cannot provide tactile feedback to tell the user that he is touching the screen at more than one location.
While multiple touches present a problem with the small touch-sensitive screens already in common use, the problem is expected to worsen as larger screens are introduced. This is due to the “palm rest problem.” When using a small screen only a few inches wide, the palm of the user's hand rests, if anywhere, beyond the edge of the screen on the periphery of the computing device. With a larger screen, when a right-handed user selects an area on the left side of the screen, for example, it is natural for him to rest his right palm below and to the right of the selected point. This palm rest becomes a secondary touch on the screen, confusing it as described above.
As one interesting scenario for the multiple-touch problem, consider a recently introduced tablet-like detachable monitor supported by a host computing device. The host is typically a personal computer (PC) sitting in a fixed location. The tablet has a large (eight or more inches wide) touch-sensitive display screen. The tablet, once detached from the host, communicates wirelessly with the host and operates as a portable input/output device. A user carries the tablet around an office or home, using the tablet to gain access to applications running on the fixed-location host. For at least two reasons, the multiple-touch problem is a matter of special concern for users of this tablet. First, some of the host-supported applications, for example e-mail, word processing, and Web browsing, require extended text entry. To accommodate this, the tablet presents a virtual keyboard. However, as described above, their lack of tactile feedback makes virtual keyboards inherently susceptible to multiple touches. Second, the large size of the screen and the fact that the tablet often rests in a user's lap invite the user to rest his hands on it.
What is needed is way to detect multiple touches on a touch-sensitive screen. Ideally, the multiple touches can be individually resolved, the correct one determined and acted upon, and the others discarded.